package com.hon.legionnaire.negocio.vo;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.MappedSuperclass;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;

@MappedSuperclass
public class ContaVO implements Serializable{
	
	private static final long serialVersionUID = 1L;
	
	@Column(name = "descricao", nullable=true, length=80 )
	private String descricao;
	
	@Column(name = "valor", nullable=false, length=15)
	private float valor;
	
	@Column(name = "multa", nullable=true, length=15)
	private float multa;		
	
	@Column(name = "juros", nullable=true, length=15)
	private float juros;	
	
	@Column(name = "desconto", nullable=true, length=15)
	private float desconto;	
		
	@Temporal(TemporalType.TIMESTAMP)
	@Column (name = "dt_emissao", nullable=false )
	private Date dataEmissao;
	
	@Temporal(TemporalType.TIMESTAMP)
	@Column (name = "dt_cancelamento", nullable=true)
	private Date dataCancelamento;	
	
	@Temporal(TemporalType.TIMESTAMP)
	@Column (name = "dt_vencimento", nullable=false)
	private Date dataVencimento;

	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "cod_forma_pagamento", nullable=false)
	@Fetch(FetchMode.JOIN)
	private FormaPagamentoVO formaPagamentoVO;


	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public float getValor() {
		return valor;
	}

	public void setValor(float valor) {
		this.valor = valor;
	}

	public float getMulta() {
		return multa;
	}

	public void setMulta(float multa) {
		this.multa = multa;
	}

	public float getJuros() {
		return juros;
	}

	public void setJuros(float juros) {
		this.juros = juros;
	}

	public Date getDataEmissao() {
		return dataEmissao;
	}

	public void setDataEmissao(Date dataEmissao) {
		this.dataEmissao = dataEmissao;
	}

	public Date getDataVencimento() {
		return dataVencimento;
	}

	public void setDataVencimento(Date dataVencimento) {
		this.dataVencimento = dataVencimento;
	}

	public FormaPagamentoVO getFormaPagamentoVO() {
		return formaPagamentoVO;
	}

	public void setFormaPagamentoVO(FormaPagamentoVO formaPagamentoVO) {
		this.formaPagamentoVO = formaPagamentoVO;
	}

	public Date getDataCancelamento() {
		return dataCancelamento;
	}

	public void setDataCancelamento(Date dataCancelamento) {
		this.dataCancelamento = dataCancelamento;
	}

	public float getDesconto() {
		return desconto;
	}

	public void setDesconto(float desconto) {
		this.desconto = desconto;
	}

}
